#ifndef SLIST_H_
#define SLIST_H_

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SLTDataType;

typedef struct SList
{
    SLTDataType data;   //数据域
    struct SList *next; //指针域
} SListNode;

void SListPrint(SListNode *phead);                                        //显示链表内容
void SListPushBack(SListNode **pphead, SLTDataType x);                    //尾插
void SListPushFront(SListNode **pphead, SLTDataType x);                   //头插
void SListPopBack(SListNode **pphead);                                    //尾删
void SListPopFront(SListNode **pphead);                                   //头删
SListNode *SListFind(SListNode *phead, SLTDataType x);                    //查找节点
void SListInsert(SListNode **pphead, SListNode *pos, SLTDataType x);      //在pos节点前面插入一个新的节点
void SListErase(SListNode **pphead, SListNode *pos);                      //删除pos节点前面的节点
void SListInsertAfter(SListNode **pphead, SListNode *pos, SLTDataType x); //在pos节点后面插入一个新的节点
void SListEraseAfter(SListNode **pphead, SListNode *pos);                 //删除pos后一个节点的数据
void SListDestory(SListNode **pphead);                                    //释放链表
#endif